
(function($){
   $.fixedTopicWidth = function(str,options) {
       //(abcccccddddddddddddddddddd,12,".")--->(abcdddddddd....)
       //有填充
       var setting = $.extend({length:50,fill:null,fillLength:3}
               ,options||{})
       
       var pos = setting.length - str.length;
       
           //需不需要截取
           if(pos>0) {
               return str;
           } else {
               if(setting.fill) {
                   var fs = "";
                   for(var i=0;i<setting.fillLength;i++) {
                       fs=fs+setting.fill;
                   }
                   return (str.substr(0,setting.length-3))+fs;
               }else {
                   return str.substr(0,setting.length);
               }
           }
      
   };
   
   //特别注意 插件函数中的this 和闭包中的this 的区别
   $.fn.formatTopic = function(options) {
       this.each(function(n) {
           //这个时候的this不再是包装集对象 而是这个闭包对象
           //此时闭包对象中的引用是一个html节点 要访问就需要使用$(this)
           $(this).html($.fixedTopicWidth($(this).html(),options));
       });
   };
   
   /**
    * 使用$.fn来创建包装集插件 
    * @returns {jquery_util_topic_L2.$.fn}
    */
   $.fn.setColor = function() {
       //此时的this对象指的是整个包装集对象 已经被封装为包装集
       //就不再使用$(this)来封装
       this.css("color","#0f0");
       //基于包装集的函数一定要能够支持链式结构
       return this;
   };
   /**
    * 如果state为true 就表示readonly 否则表示取消readonly
    */
   $.fn.setReadOnly = function(state) {
       //1.找到所有的文本框 不是find而是filter
       this.filter("input:text")
               .prop("readonly",state)
               .css("opacity",state?0.5:1.0);
       return this;
   }
})(jQuery)